package com.zmn.plat.services.interfaces.product.guarantee;

import java.util.List;

import com.zmn.plat.model.entity.category.ServCategAndCategTwoQuery;
import com.zmn.plat.model.entity.product.guarantee.ProductGuarantee;
import com.zmn.plat.model.entity.product.guarantee.ProductGuaranteeQuery;
import com.zmn.plat.model.vo.product.ShowProductIdVO;

/**
 * 产品保障管理
 *
 * @author linfeng
 * @since 2020-03-17 10:16:02
 */
public interface ProductGuaranteeService {
    /**
     * 根据主键查询
     *
     * @param productGuaranteeId
     *            ID
     * @return
     */
    ProductGuarantee findByKey(Integer productGuaranteeId);

    /**
     * 根据产品ID查询
     *
     * @param productId
     * @return
     */
    ProductGuarantee findByProductId(Integer productId);

    /**
     * 根据产品ID集合查询
     *
     * @param productIdList
     * @return
     */
    List<ProductGuarantee> listByProductIds(List<Integer> productIdList);

    /**
     * 分页搜索
     *
     * @param query
     *            条件
     * @return 列表
     */
    List<ProductGuarantee> listPageByQuery(ProductGuaranteeQuery query);

    /**
     * 搜索
     *
     * @param query
     *            条件
     * @return
     */
    List<ProductGuarantee> listByQuery(ProductGuaranteeQuery query);

    /**
     * 产品保障信息和产品对应关系
     *
     * @param categIds
     *            条件
     * @return
     */
    List<ShowProductIdVO> listConfigGuaranteeProductIdByCategTwoQuery(List<ServCategAndCategTwoQuery> categIds);

    /**
     * 所有数据
     *
     * @return
     */
    List<ProductGuarantee> listAll();

    /**
     * 统计
     *
     * @param query
     *            条件
     * @return
     */
    Integer countByQuery(ProductGuaranteeQuery query);

    /**
     * 更新
     *
     * @param productGuarantee
     * @return
     */
    Integer updateByKey(ProductGuarantee productGuarantee);

    /**
     * 根据产品id更新图片
     *
     * @param updateGuarantee 修改的信息
     * @param updateProductGuaranteeProductIds 产品id
     * @return
     */
    Integer updateByProductIds(List<Integer> updateProductGuaranteeProductIds, ProductGuarantee updateGuarantee);
    /**
     * 插入
     *
     * @param productGuarantee
     * @return
     */
    Integer insert(ProductGuarantee productGuarantee);

    /**
     * 批量插入
     *
     * @param addProductGuaranteeList
     * @return
     */
    Integer insertBatch(List<ProductGuarantee> addProductGuaranteeList);

    /**
     * 删除
     *
     * @param productGuaranteeId
     *            ID
     * @return
     */
    Integer deleteByKey(Integer productGuaranteeId);

}
